package chatNI;


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

import chatModel.*;

import messages.Bye;
import messages.ChatMessage;
import messages.FileNotif;
import messages.Hello;
import messages.Message;
import messages.MessagesFactory;

/**
 * Thread pour envoyer un seul message
 * 
 */
public class ThreadUdpEnvoie extends Thread {
	
	private DatagramSocket socketUdp;
	private byte[] myByteToSend;
	private InetAddress adrDistante;
	
	/**
         * Constructeur
         * @param socketUdp Socket dans lequel le message à envoyer va passer
         * @param myByteToSend Messgae à envoyer sous sa forme binaire
         * @param adrDistante IP vers lquelle i lfaut envoyer le message
         */
	public ThreadUdpEnvoie(DatagramSocket socketUdp, byte[] myByteToSend, InetAddress adrDistante) {
		super();
		this.socketUdp = socketUdp;
		this.myByteToSend = myByteToSend;
		this.adrDistante=adrDistante;
	}
	
        /**
         * Lance le thread
         */
	public void run(){
		sendMessage(this.socketUdp, this.myByteToSend, this.adrDistante);
	}
	
        /**
         * Envoi le message
         * @param socketUdp Socket dans lequel passe le message
         * @param myByteToSend Message à envoyer sous sa forme binaire
         * @param adrDistante IP distante vers laquelle il faut envoyer ce message
         */
	public void sendMessage(DatagramSocket socketUdp, byte[] myByteToSend, InetAddress adrDistante){
		try {
			socketUdp.send(new DatagramPacket(myByteToSend, myByteToSend.length, adrDistante, Port.envoieMsg));
		} catch (IOException e) {
			System.out.println("probleme envoi paquet");
			e.printStackTrace();
		}
	}

}
